package ynu.edu.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * Text2Img 生成记录实体类 - 精简版，只存储重要参数
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("text2img")
public class Text2Img implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 任务ID
     */
    @TableField("task_id")
    private String taskId;

    /**
     * 正面提示词
     */
    @TableField("prompt")
    private String prompt;

    /**
     * 负面提示词
     */
    @TableField("negative_prompt")
    private String negativePrompt;

    /**
     * 种子值
     */
    @TableField("seed")
    private Long seed;

    /**
     * 采样器名称
     */
    @TableField("sampler_name")
    private String samplerName;

    /**
     * 步数
     */
    @TableField("steps")
    private Integer steps;

    /**
     * CFG比例
     */
    @TableField("cfg_scale")
    private BigDecimal cfgScale;

    /**
     * 图片宽度
     */
    @TableField("width")
    private Integer width;

    /**
     * 图片高度
     */
    @TableField("height")
    private Integer height;

    /**
     * 去噪强度
     */
    @TableField("denoising_strength")
    private BigDecimal denoisingStrength;

    /**
     * 模型名称
     */
    @TableField("model_name")
    private String modelName;

    /**
     * 模型哈希
     */
    @TableField("model_hash")
    private String modelHash;

    /**
     * 批次大小
     */
    @TableField("batch_size")
    private Integer batchSize;

    /**
     * 调度器名称
     */
    @TableField("scheduler")
    private String scheduler;

    /**
     * 面部修复
     */
    @TableField("restore_faces")
    private Boolean restoreFaces;

    /**
     * 平铺模式
     */
    @TableField("tiling")
    private Boolean tiling;

    /**
     * 启用高分辨率修复
     */
    @TableField("enable_hr")
    private Boolean enableHr;

    /**
     * 高分辨率缩放比例
     */
    @TableField("hr_scale")
    private BigDecimal hrScale;

    /**
     * 高分辨率上采样器
     */
    @TableField("hr_upscaler")
    private String hrUpscaler;

    /**
     * 高分辨率第二遍步数
     */
    @TableField("hr_second_pass_steps")
    private Integer hrSecondPassSteps;

    /**
     * 生成状态：success, failed, processing
     */
    @TableField("status")
    private String status;

    /**
     * 生成耗时（毫秒）
     */
    @TableField("generation_time")
    private Long generationTime;

    /**
     * 错误信息
     */
    @TableField("error_message")
    private String errorMessage;

    /**
     * 生成图片URL列表（JSON格式）
     */
    @TableField("image_urls")
    private String imageUrls;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 逻辑删除标志：0-未删除，1-已删除
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;

} 